package demo02;

import java.util.InputMismatchException;
import java.util.Scanner;

/*题目：一个偶数总能表示为两个素数之和。*/
public class topic44 {
    public static void main(String[] args) {
        // 获取用户输入的数字
        Scanner sc = new Scanner(System.in);
        int bottle;
        boolean index = false;
        while(true) {
            try {
                System.out.println("请您输入一个偶数： ");
                int odd = sc.nextInt();
                // 判断该用户输入的数字是否为偶数，不是偶数的话让用户重新输入
                if (odd % 2 == 0) {
                    for (int i = 2; i < odd; i++) {
                        // 如果第一个素数找到了，那么第二个素数就是该数减去该素数
                        if (isPrimer(i)) {
                            bottle = odd - i;
                            // 如果该数减去该素数得到的差也是素数，那么该减数和差就符合题目条件，输出结果
                            // 但是我想输出所有可能的相加结果（这步可以没有，只输出一个即可），把break拿上来即可
                            if (isPrimer(bottle)) {
                                if (index) {
                                    System.out.println(odd + "=" + i + "+" + bottle);
                                } else {
                                    System.out.println("该数可以表示为两个素数之和。");
                                    System.out.println(odd + "=" + i + "+" + bottle);
                                    index = true;
                                }
                            }
                        }
                    }
                    break;
                } else {
                    System.out.println("您输入的不是偶数，请输入一个偶数。");
                }
            }catch (InputMismatchException e){
                System.out.println("您输入的数字有误，请输入一个偶数，偶数，知道是啥不？");
                break;
            }
        }
    }

    //传入一个int类型的参数，判断该数是否是素数

    public static boolean isPrimer(int num){
        boolean flag = true;
        for (int i = 2; i < num; i++) {
            if(num % i == 0){
                return false;
            }
        }
        return flag;
    }
}
